import {
  BaseEntity,
  Column,
  Entity,
  PrimaryColumn,
  PrimaryGeneratedColumn,
} from 'typeorm'

// name参数是使用的表名称
@Entity({ name: 'menu' })
export class Menu extends BaseEntity {
  // 自增主键
  @PrimaryGeneratedColumn({ type: 'int', name: 'id' })
  id: number

  // 菜单名称
  @PrimaryColumn({
    type: 'varchar',
    name: 'funcName',
  })
  funcName: string

  // 菜单权限字段
  // @Column({
  //   type: 'varchar',
  //   name: 'funcPerms',
  // })
  // funcPerms: string

  // 路由url
  @Column({
    type: 'varchar',
    name: 'url',
    nullable: true,
  })
  url: string

  // 菜单类型 1: 最外层菜单 2： 子菜单 3： 按钮
  @Column({
    type: 'int',
    name: 'funcType',
  })
  funcType: number

  // 父节点id 最外层0
  @Column({
    type: 'int',
    name: 'parentId',
  })
  parentId: number

  // 排序
  @Column({
    type: 'int',
    name: 'sortOrder',
  })
  sortOrder: number

  // 图标 i-xxx
  @Column({
    type: 'varchar',
    name: 'funcIcon',
    nullable: true,
  })
  funcIcon: string

  // 路由名称 最外层为null
  @Column({
    type: 'varchar',
    name: 'compName',
    nullable: true,
  })
  compName: string

  // 路由路径 最外层是layout
  @Column({
    type: 'varchar',
    name: 'compPath',
  })
  compPath: string

  // 路由参数
  @Column({
    type: 'varchar',
    name: 'routeQuery',
    nullable: true,
  })
  routeQuery: string

  // 是否缓存
  @Column({
    type: 'tinyint',
    name: 'isCache',
    nullable: true,
  })
  isCache: boolean

  // 是否显示
  @Column({
    type: 'tinyint',
    name: 'isDisplay',
    nullable: true,
  })
  isDisplay: boolean

  // 备注
  @Column({
    type: 'varchar',
    name: 'remark',
    nullable: true,
  })
  remark: string

  // 是否删除
  @Column({
    type: 'tinyint',
    name: 'isDelete',
    nullable: true,
  })
  isDelete: boolean
}
